Telegram Group Search
⚡️ Flashbax - удобный ускоритель для reinforcement learning в JAX-экосистеме. Проект предлагает свежий взгляд на проблему с буферами воспроизведения, переосмысливая работу с данными.

Библиотека выделяется тем, что превращает буферы из пассивных хранилищ в интеллектуальные компоненты, которые можно встраивать в полностью скомпилированные JIT-функции. Удобно, что разработчики прописали оптимизированные версии для разных сценариев: от простых переходов (как в DQN) до сложных траекторий для R2D2, причём с поддержкой приоритетного семплирования.

🤖 GitHub

@machinelearning_interview
📄 Scaling Laws for Native Multimodal Models

📌 Исследователи из Sorbonne и Apple проанализировали 457 мультимодальных моделей, чтобы понять, как масштабируются нативные мультимодальные архитектуры (NMM) — обученные с нуля, а не через “приклейку” vision-энкодеров к LLM.

🔍 Главное:
Late-fusion (классика с vision encoder + LLM) ≠ обязательно лучше.
Early-fusion модели, в которых всё учится совместно с нуля — обгоняют по качеству при меньшем количестве параметров, обучаются быстрее и проще в продакшене.
Добавление Mixture of Experts (MoE) даёт прирост — модели учат модальность-специфичные веса, сохраняя ту же цену инференса.
Scaling laws (законы масштабирования) у NMM — почти те же, что у LLM. Можно планировать бюджеты и рост моделей аналогично.

⚠️ Ограничения:
— Пока неясно, как точно это поведение переносится на downstream-задачи.
— Нужно больше экспериментов с разными пропорциями мультимодальных данных.
— Для early-fusion на высоких разрешениях нужны новые подходы к работе с токенами (контекст, пуллинг и т.д.).

📎 Вывод:
Early-fusion — не просто рабочий вариант, а оптимальный выбор для мультимодальных моделей при ограниченных ресурсах. Отказ от “склеек” делает обучение проще, быстрее и дешевле.

Читать

#ai #multimodal #scalinglaws #moe #llm #mlresearch #arxiv
Forwarded from Machinelearning
🌟 NVIDIA добавила нативную поддержку Python в CUDA.

Python уже несколько лет уверенно лидирует среди языков программирования, а теперь стал ещё ближе к железу. На GTC 2025 NVIDIA объявила о полноценной интеграции Python в свой CUDA-стек.

Это значит, что писать код для GPU можно будет напрямую на Python — без погружения в C++ или Fortran. Как подчеркнул Стивен Джонс, архитектор CUDA, цель — сделать инструмент естественным для Python-разработчиков: «Это не перевод синтаксиса C на Python. Все должно работать так, как привыкли разработчики».

Раньше CUDA требовала глубокого понимания низкоуровневых языков и это здорово ограничивало аудиторию. Сейчас, когда Python стал стандартом в ML и DS, NVIDIA открывает двери для миллионов программистов. По данным The Futurum Group, в 2023 году CUDA использовали 4 миллиона человек — теперь их число может резко вырасти.

Техническая часть такая же обширная, как и ожидания этого события профессиональным сообществом.

🟢Во-первых, появилась библиотека cuPyNumeric — аналог NumPy, который переносит вычисления с CPU на GPU буквально заменой импорта.

🟢Во-вторых, CUDA Core переосмыслен для Python: здесь сделан упор на JIT-компиляцию и минимизацию зависимостей.

🟢В-третьих, добавлены инструменты для профилирования и анализа кода, а ускоренные C++-библиотеки теперь доступны из Python без потерь в производительности.

Но главное — новый подход к параллельным вычислениям. Вместо ручного управления потоками, как в C++, NVIDIA предлагает модель CuTile, которая оперирует массивами, а не отдельными элементами. Это упрощает отладку и делает код читаемым, не жертвуя скоростью. По сути, разработчики получают высокоуровневую абстракцию, скрывающую сложности железа, но сохраняющую гибкость.

Пока CuTile доступен только для Python, но в планах — расширение для C++. Это часть стратегии NVIDIA по поддержке новых языков: Rust и Julia уже на походе.

Python-сообщество уже может экспериментировать — например, интегрировать CUDA-ядра в PyTorch или вызывать привычные библиотеки. Теперь даже те, кто никогда не писал на C++, смогут использовать всю мощь GPU — осталось проверить, как это скажется на скорости создания прекрасных LLM светлого будущего.

🔜 Посмотреть полную презентацию на GTC 2025


@ai_machinelearning_big_data

#AI #ML #Python #CUDA #NVIDIA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
MLечный путь: митап, коммьюнити, знания

В программе:
- подбор инфраструктуры для ML под запрос бизнеса,
- деплой инференса в рентген-вагоне,
- развертывание Edge-AI в буквально (!) полевых условиях.

А ещё — активное участие вместо пассивного слушания: питчи, нетворкинг и мерч за лучшие идеи.

23 апреля в 18:00 приходите в офис Selectel в Санкт-Петербурге и подключайтесь онлайн.

Регистрация и детали по ссылке: https://slc.tl/tgb6o

Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwdfLKT
🎲 Задача со стажировки ШАД по вероятности: сколько участников добежит до вершины?

Представим забег 100 человек по узкому скользкому эскалатору. У каждого есть шанс поскользнуться и упасть — тогда он и все, кто бежал за ним, соскальзывают вниз. Добираются до вершины только те, кто был впереди последнего упавшего.

Мы можем настраивать вероятность падения p. Вопрос: какое значение `p` нужно выбрать, чтобы в среднем до вершины добегало ровно 20 человек из 100?

Обозначения:
N = 100: общее количество участников.
K = 20: желаемое среднее количество участников, достигших вершины.
p: вероятность того, что один участник поскользнется и упадет (эту величину нужно найти).

q = 1 - p: вероятность того, что один участник не упадет.
X: случайная величина, равная количеству участников, достигших вершины. Мы хотим, чтобы E[X] = 20.

Логика процесса:
Участник i (где i от 1 до 100) доберется до вершины тогда и только тогда, когда ни один из участников перед ним (включая его самого) не упадет.

То есть, участники 1, 2, ..., i должны успешно пройти свой путь.

Вероятность того, что участник 1 достигнет вершины = P(участник 1 не упал) = q.
Вероятность того, что участник 2 достигнет вершины = P(участник 1 не упал И участник 2 не упал) = q * q = q^2.

Вероятность того, что участник i достигнет вершины = P(участники 1, ..., i не упали) = q^i.

Математическое ожидание E[X]:

Математическое ожидание количества добравшихся до вершины можно вычислить как сумму вероятностей того, что каждый конкретный участник доберется до вершины. Это связано со свойством линейности математического ожидания и использованием индикаторных переменных (I_i = 1, если i-й участник добрался, 0 иначе; E[X] = E[sum(I_i)] = sum(E[I_i]) = sum(P(I_i=1))).
E[X] = P(участник 1 добрался) + P(участник 2 добрался) + ... + P(участник N добрался)
E[X] = q^1 + q^2 + q^3 + ... + q^N
Это сумма первых N членов геометрической прогрессии с первым членом a = q и знаменателем r = q. Формула суммы:
S_N = a * (1 - r^N) / (1 - r)
Подставляем наши значения:
E[X] = q * (1 - q^N) / (1 - q)
Решение уравнения:
Мы хотим, чтобы E[X] = K = 20, при N = 100.
20 = q * (1 - q^100) / (1 - q)
Вспомним, что q = 1 - p. Значит, 1 - q = p.
20 = (1 - p) * (1 - (1 - p)^100) / p
20p = (1 - p) * (1 - (1 - p)^100)

Это уравнение довольно сложно решить аналитически из-за члена (1 - p)^100. Однако мы можем сделать разумное предположение.

Приближение:
Поскольку мы ожидаем, что только 20 из 100 человек доберутся до вершины, это означает, что падения должны происходить относительно часто, и вероятность того, что все 100 человек не упадут (q^100), должна быть очень мала. То есть, q^100 ≈ 0.
Если q^100 пренебрежимо мало по сравнению с 1, то формула для E[X] упрощается:

E[X] ≈ q * (1 - 0) / (1 - q)
E[X] ≈ q / (1 - q)
Теперь подставим желаемое значение E[X] = 20:

20 ≈ q / (1 - q)
20 * (1 - q) ≈ q
20 - 20q ≈ q
20 ≈ 21q
q ≈ 20 / 21
Теперь найдем p:
p = 1 - q
p ≈ 1 - (20 / 21)
p ≈ 1 / 21

Проверка приближения:

Давайте проверим, насколько мало значение q^100 при q = 20/21:
q^100 = (20/21)^100 ≈ (0.95238)^100

Используя калькулятор, (20/21)^100 ≈ 0.0076. Это действительно мало по сравнению с 1.

Посчитаем E[X] с этим приближением:

E[X] = (20/21) * (1 - (20/21)^100) / (1 - 20/21)
E[X] = (20/21) * (1 - 0.0076) / (1/21)
E[X] = 20 * (1 - 0.0076)
E[X] = 20 * 0.9924
E[X] ≈ 19.848

Это очень близко к целевому значению 20.

Ответ:
Чтобы в среднем вершины достигали 20 ребят из 100, вероятность падения p для каждого участника нужно подобрать примерно равной 1/21 (или около 0.0476).

👇 Пишите свое решение в комментариях

@machinelearning_interview
🖥 OpenAI опубликовала новое руководство по промптингу для GPT-4.1.

Это полезный ресурс для улучшения работы с моделью.

В руководство включен подробный "агентный промпт" (Agentic Prompt).

Именно этот промпт OpenAI использовала для достижения рекордно высокого балла в сложном бенчмарке по разработке ПО SWE-bench Verified.

Что представляет собой этот агентный промпт?

Это, по сути, детальная инструкция для GPT-4, нацеленная на автономное решение задач по исправлению кода в репозиториях. Ключевые принципы, заложенные в нем:
- Глубокое понимание: Сначала тщательно изучить проблему.
- Исследование: Проанализировать кодовую базу.
- Планирование: Разработать четкий пошаговый план.

- Тестирование: Часто запускать тесты после каждого шага.
- Итерация: Повторять процесс до полного решения проблемы.
- Строгая верификация: Убедиться в корректности и надежности решения
- Автономность: Работать с предоставленными проектами без доступа к интернету и не завершать работу до полного решения.

Этот подход демонстрирует, как структурированные, пошаговые инструкции с акцентом на тестирование и итерацию могут значительно повысить эффективность ИИ в сложных задачах программирования.

📚 Руководство
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет следующий код на Python (модуль statistics)?


import statistics as stats
import math

data = [1, 2, 2, float('nan'), 3, 4]

print("Mean:", stats.mean(data))
print("Median:", stats.median(data))
print("Mode:", stats.mode(data))


🔢 Варианты ответа:

A)

Median: 2.5
Mode: 2


B)

Median: 2.5
Mode: 2


C)ValueError: nan is not a valid number


D)

Median: nan
Mode: 2


Правильный ответ: C

💡 Почему?
- Модуль
statistics не умеет работать с NaN.
-
stats.mean() и stats.median() вызовут StatisticsError или ValueError.
- В отличие от
numpy.nanmean, здесь всё падает.
📌 Подвох — в
float('nan') в списке.
2025/05/13 00:20:09
Back to Top
HTML Embed Code: